package cn.kilo.domain.service.infterface;

import cn.kilo.domain.model.order.entity.*;
import cn.kilo.domain.model.order.res.*;
import cn.kilo.domain.model.order.vo.OrderStatusVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @author kilok
 */
public interface IOrderStrategyService {
    List<DepartmentRes> getDepartment();

    List<OrderStatusVO> performJob(OrderEntity user);

    String updateOrderPicture(Long orderId,MultipartFile image) throws IOException;

    Collection<Object> queryGuardOrder(OrderEntity build);

    List<OrderStatusVO> getOrderByQRCode(OrderEntity build);

    Object[] getTokenOrder(OrderEntity build);

    int getCreateOrderByRidgepole(OrderEntity build);

    String updateOverPicture(MultipartFile image, Long orderId) throws IOException;

    List<OrderStatusVO> takeOrderFromGuard(OrderEntity sorter2);

    Collection<Object> getOrderInfoList(OrderEntity build);

    OrderStatusVO userGetOrderInfo(OrderEntity build);

    List<OrderStatusVO> getUserOrder(String userId, String status);

    boolean JudgeOrder(OrderJudgeEntity type);

    void offerOrderToStaff(String ridgepole,Long orderId);

    String setWeather(String userId, String weather);

    String getOrderNum();

    List<JudgeRes> getBadJudge(String type);

    Map<String, Integer> getLeftStaff(OrderEntity orderEntity);

    List<DepartRes> getDepartmentGroup();

    List<String> getPosition();

    void getPayInfo();

    List<FloorRes> getFloor(String ridgepole);

    StaffRes getStaff(String staffId);

    String updateORCode(MultipartFile multipartFile) throws IOException;

    Long getAllSalary();

    Long getMonthSalary();

    Integer getUserNumber();

    Integer getMothUser();

    Long getAllMoney();

    Long getMothMoney();

    Long getAllOutcome();

    Long getMothOutcome();

    List<MUserRes> getAllUsers();

    List<MUserRes> getUserBy(MUserEntity build);


    List<MRiderRes> getAllRider();

    List<MRiderRes> getRiderBy(MRiderEntity build);

    List<MGuardRes> getAllGuard();

    List<MGuardRes> getGuardBy(MGuardEntity build);

    List<MSorterRes> getAllSorter();


    List<MSorterRes> getSorterBy(MSorterEntity build);
}
